﻿<?xml version="1.0" encoding="utf-8" ?>

<lcp:Project 
   xmlns:lcp="http://schemas.icitadel.com/Lazarus/CPP/Physical.xsd" 
   name="OneReality - DirectX Framework (DXFX)" namespace="dxfx">
   <lcp:Description>A DirectX-based framework for UI and rendering functionality.</lcp:Description>
   <lcp:Classes>

      <lcp:Class id="Control" name="Control" namespace="dxfx" created="08-Dec-2005 3:33:20 PM" author="Ryan T. Vogrinec">
         <lcp:Description>Implementation of the Class Control</lcp:Description>
         
         <lcp:Names>
            <lcp:Name context="HeaderRegion" value="CONTROL_H" />
            <lcp:Name context="HeaderFilename" value="Control.h" />
         </lcp:Names>

         <lcp:Friends>
            <lcp:Friend class="Form" />
         </lcp:Friends>

         <lcp:Includes>
            <lcp:Include type="Header" target="Form" />
            <lcp:Include type="System" target="string" />
         </lcp:Includes>

         <lcp:Uses>
            <lcp:Using type="Namespace" target="std" />
         </lcp:Uses>

         <lcp:Forwards>
            <lcp:Forward class="Form" />
            <lcp:Forward class="ContainerControl" />
            <lcp:Forward class="Control" />
         </lcp:Forwards>

         <lcp:Storage>
            
            <lcp:Field id="Name" name="fszName" type="std::string" ltype="vt:string">
               <lcp:Type context="CPP" name="std::string" />
            </lcp:Field>

            <lcp:Field id="OnEnabledChanged" name="fpOnEnabledChanged" type="CCallback">
               <lcp:Type context="CPP" name="CCallback" is-template="True">
                  <lcp:Template-Parameters>
                     <lcp:Template-Parameter name="EventArgs" type="EventArgs">
                        <lcp:Type context="CPP" name="EventArgs*" />
                     </lcp:Template-Parameter>
                  </lcp:Template-Parameters>
               </lcp:Type>
            </lcp:Field>

         </lcp:Storage>

         <lcp:Properties>

            <lcp:Property id="Name" name="Name" field="Name" type="std::string" ltype="vt:string" readonly="False" calculated="False">
               <lcp:Type context="CPP" name="std::string" />
               <lcp:Property-Get method="GetName" />
               <lcp:Property-Set method="SetName" />
            </lcp:Property>

            <lcp:Property id="Focused" name="Focused" type="bool" ltype="vt:boolean" calculated="True">
               <lcp:Type context="CPP" name="bool" />
               <lcp:Property-Get method="IsFocused" />
            </lcp:Property>

         </lcp:Properties>

         <lcp:Methods>

            <lcp:Method id="InitializeState" scope="Public" type="Default" name="InitializeState" return-type="vt:hresult">
               <lcp:ReturnType context="CPP" name="void" />
            </lcp:Method>

            <lcp:Method id="GetName" scope="public" name="GetName" type="Property.Get" return-type="vt:hresult" is-property-handler="true">
               <lcp:ReturnType context="CPP" name="HRESULT" />
               <lcp:Parameters>
                  <lcp:Parameter name="retVal" type="std::string" ltype="vt:string" byref="True">
                     <lcp:Type context="CPP" name="std::string**" />
                  </lcp:Parameter>
               </lcp:Parameters>
               <lcp:Body>
                  <lcp:Param-Set param="retVal" field="Name" />
               </lcp:Body>
            </lcp:Method>

            <lcp:Method id="SetName" scope="Public" name="SetName" type="Property.Set" return-type="vt:hresult" is-property-handler="true">
               <lcp:ReturnType context="CPP" name="HRESULT" />
               <lcp:Parameters>
                  <lcp:Parameter name="value" type="vt:string" byref="True">
                     <lcp:Type context="CPP" name="std::string*" />
                  </lcp:Parameter>
               </lcp:Parameters>
               <lcp:Body>
                  <lcp:Field-Set param="value" field="Name" />
               </lcp:Body>
            </lcp:Method>

            <lcp:Method id="IsFocused" scope="Public" name="IsFocused" type="Property.Get" return-type="vt:hresult" is-property-handler="True">
               <lcp:ReturnType context="CPP" name="HRESULT" />
               <lcp:Parameters>
                  <lcp:Parameter name="retVal" type="vt:bool" byref="True">
                     <lcp:Type context="CPP" name="bool**" />
                  </lcp:Parameter>
               </lcp:Parameters>
               <lcp:Body is-custom="True" />
            </lcp:Method>

            <lcp:Method id="SetOnEnabledChanged" scope="Public" name="SetOnEnabledChanged" type="Event.Add" return-type="vt:none" is-event-handler="True">
               <lcp:ReturnType context="CPP" name="void" />
               <lcp:Parameters>
                  <lcp:Parameter name="value" type="CCallback">
                     <lcp:Type context="CPP" name="CCallback" is-template="True">
                        <lcp:Template-Parameters>
                           <lcp:Template-Parameter name="EventArgs" type="EventArgs">
                              <lcp:Type context="CPP" name="EventArgs*" />
                           </lcp:Template-Parameter>
                        </lcp:Template-Parameters>
                     </lcp:Type>
                  </lcp:Parameter>
               </lcp:Parameters>
               <lcp:Body>
                  <lcp:Field-Set param="value" field="OnEnabledChanged" />
               </lcp:Body>
            </lcp:Method>

            <lcp:Method id="OnEnabledChanged" scope="Protected" name="OnEnabledChanged" type="Event.Fire" return-type="vt:none" is-event-handler="True">
               <lcp:ReturnType context="CPP" name="void" />
            </lcp:Method>
            
         </lcp:Methods>

         <lcp:Events>

            <lcp:Event id="EnabledChanged" name="EnabledChanged" argument-type="EventArgs">
               <lcp:ArgumentType context="CPP" name="EventArgs*" />
               <lcp:Event-Add method="SetOnEnabledChanged" />
               <lcp:Event-Fire method="OnEnabledChanged" />
            </lcp:Event>

         </lcp:Events>

      </lcp:Class>

   </lcp:Classes>
</lcp:Project>